﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.ServiceModel;

namespace ServicioEvaluacion
{
    public class Preguntas:IPreguntas
    {
        #region Agregar Pregunta

        public bool Agregar(Pregunta nuevaPregunta)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Preguntas p = new LogicaDeNegocios.Preguntas();
                resultado = p.Agregar(nuevaPregunta);
            }
            catch (Exception ex)
            {
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));
                resultado = false;
            }

            return resultado;
        } 
        #endregion

        #region Modificar Pregunta

        public bool Modificar(Pregunta preguntaAModificar)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Preguntas p = new LogicaDeNegocios.Preguntas();
                resultado = p.Modificar(preguntaAModificar);
            }
            catch (Exception ex)
            {
                resultado = false;
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));
            }

            return resultado;
        }
        
        #endregion

        #region Eliminar Pregunta

        public bool Eliminar(Pregunta preguntaAEliminar)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Preguntas p = new LogicaDeNegocios.Preguntas();
                resultado = p.Eliminar(preguntaAEliminar);
            }
            catch (Exception ex)
            {
                resultado = false;
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));
            }

            return resultado;
        }
        
        #endregion       

        #region Obtener Preguntas

        public List<Pregunta> ObtenerPreguntas(string examenClave = "", short habilidadId = 0, short id = 0)
        {
            List<Pregunta> resultado = null;

            try
            {
                LogicaDeNegocios.Preguntas p = new LogicaDeNegocios.Preguntas();
                resultado = p.ObtenerPreguntas(examenClave, habilidadId, id);
            }
            catch (Exception ex)
            {
                resultado = null;
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));
            }

            return resultado;
        }
        
        #endregion

        #region Obtener Pregunta

        public Pregunta ObtenerPregunta(string examenClave, short habilidadId, short id)
        {
            Pregunta resultado = null;

            try
            {
                LogicaDeNegocios.Preguntas p = new LogicaDeNegocios.Preguntas();
                resultado = p.ObtenerPregunta(examenClave, habilidadId, id);
            }
            catch (Exception ex)
            {
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));
                resultado = null;
            }

            return resultado;
        }
        
        #endregion

        #region Obtener Pregunta Aleatoria
        
        public PreguntaAleatoria ObtenerPreguntaAleatoria(string examenClave, string examenCodigo)
        {
            PreguntaAleatoria resultado = null;

            try
            {
                LogicaDeNegocios.Preguntas p = new LogicaDeNegocios.Preguntas();
                resultado = p.ObtenerPreguntaAleatoria(examenClave, examenCodigo);
            }
            catch (Exception)
            {                
                resultado = null;
            }

            return resultado;
        }

        #endregion

        #region Verificar preguntas suficientes en habilidades

        public bool VerificarPreguntasSuficientes(string claveExamen)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Preguntas p = new LogicaDeNegocios.Preguntas();
                resultado = p.VerificarPreguntasSuficientes(claveExamen);
                
            }
            catch (Exception)
            {
                resultado = false;
            }

            return resultado;
        }
        
        #endregion

        #region  Verificar si es ultima pregunta

        public bool VerifiarSiEsUltimaPregunta(string claveExamen, string codigoExamen)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Preguntas p = new LogicaDeNegocios.Preguntas();
                resultado = p.VerifiarSiEsUltimaPregunta(claveExamen, codigoExamen);
                
            }
            catch (Exception)
            {
                resultado = false;
            }

            return resultado;
        } 

        #endregion
        
    }
}
